package com.alibaba.citrus.ots.sales.plan.sdo;

import com.alibaba.citrus.ots.sales.plan.CustomLockKey;
import com.alibaba.citrus.ots.sales.plan.model.features.SalesPlanScItemFeatures;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.Date;


@Data
public class SalesPlanScItemSDO implements CustomLockKey {

    /**
     * 业务单元
     */
    private String orgBusinessUnitCode;

    /**
     * 业务单元外部编码
     */
    private String outOrgBusinessUnitCode;

    private Long id;

    /**
     * 货品ID
     */
    private String scItemId;


    /**
     * 销售组织
     */
    private String orgSalesOrganizationCode;

    /**
     * 销售组织外部编码
     */
    private String outOrgSalesOrganizationCode;

    /**
     * 销售渠道
     */
    private String orgSalesChannelCode;

    /**
     * 销售渠道外部编码
     */
    private String outOrgSalesChannelCode;

    /**
     * 货品组
     */
    private String scItemGroup;

    /**
     * 类目叶子节点
     */
    private String scItemLeafCategoryId;

    /**
     * 类目根节点
     */
    private String scItemRootCategoryId;

    /**
     * 基本单位
     */
    private String basicUnit;

    /**
     * 到岸价
     */
    private Long costInsuranceFreight;

    /**
     * 标记1、新品 2、主打产品
     */
    private String mark;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 扩展字段
     */
    private String features;

    /**
     * 创建时间
     */
    private Date gmt_create;

    /**
     * 更新时间
     */
    private Date gmt_modified;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 修改人
     */
    private String updater;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 货品名称
     */
    private String scItemName;

    /**
     * 业务单元名称
     */
    private String orgBusinessUnitName;

    /**
     * 销售组织名称
     */
    private String orgSalesOrganizationName;

    /**
     * 销售渠道名称
     */
    private String orgSalesChannelName;


    private SalesPlanScItemFeatures salesPlanScItemFeatures;

    /**
     * 是否禁用
     */
    private Boolean isDisable;

    /**
     * 外部编码
     */
    private String outerId;

    /**
     * 创建人名称
     */
    private String creatorName;

    /**
     * 修改人名称
     */
    private String updaterName;

    private String costInsuranceFreightName;

    private String outboundPriceName;

    /**
     * 到岸价
     */
    private Long outboundPrice;

    @Override
    public String getCustomLockCondition() {
        if (StringUtils.isBlank(orgSalesChannelCode) || StringUtils.isBlank(scItemId)) {
            return null;
        }
        return orgSalesChannelCode + scItemId;
    }
}
